package com.ruyuan.eshop.construction.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruyuan.eshop.common.core.PageResult;
import com.ruyuan.eshop.construction.builder.FullDraftData;
import com.ruyuan.eshop.construction.builder.FullProductData;
import com.ruyuan.eshop.construction.domain.dto.AuditInfoDTO;
import com.ruyuan.eshop.construction.domain.dto.DraftDetailDTO;
import com.ruyuan.eshop.construction.domain.dto.ExecAuditDTO;
import com.ruyuan.eshop.construction.domain.entity.AuditInfoDO;
import com.ruyuan.eshop.construction.domain.request.AuditRequest;
import com.ruyuan.eshop.construction.domain.request.QueryDraftRequest;
import com.ruyuan.eshop.construction.domain.request.QueryTodoListRequest;

/**
 * @author zhonghuashishan
 * @version 1.0
 */
public interface AuditService {


    /**
     * 判断是否需要进行审批操作
     *
     * @param auditContentDTO
     * @param createFlag
     * @return java.lang.Boolean
     * @author zhonghuashishan
     */
    Boolean needAudit(FullProductData auditContentDTO, Boolean createFlag);


    /**
     * 保存草稿信息
     *
     * @param fullDraftData
     * @return void
     * @author zhonghuashishan
     */
    void saveDraft(FullDraftData fullDraftData);

    /**
     * 获取待办列表
     *
     * @param queryTodoListRequest
     * @return com.ruyuan.eshop.common.core.PageResult<com.ruyuan.eshop.construction.domain.dto.AuditInfoDTO>
     * @author zhonghuashishan
     */
    PageResult<AuditInfoDTO> getTodoList(QueryTodoListRequest queryTodoListRequest);

    /**
     * 获取草稿详情
     *
     * @param queryDraftRequest
     * @return com.ruyuan.eshop.construction.domain.dto.DraftDetailDTO
     * @author zhonghuashishan
     */
    DraftDetailDTO getDraftDetail(QueryDraftRequest queryDraftRequest);

    /**
     * 执行审核
     *
     * @param auditRequest
     * @return com.ruyuan.eshop.construction.domain.dto.ExecAuditDTO
     * @author zhonghuashishan
     */
    ExecAuditDTO execAudit(AuditRequest auditRequest);
}
